Many algorithms and protocols have been developed to avoid congestion and control bandwidth consumption in networks. In particular, techniques are known for bandwidth management and allocation in large scale distributed systems where data is (mostly) transmitted downstream from a central server to multiple endpoints. For example, traditional web servers and file distribution servers use such techniques as proxy-based caching and content delivery networks (CDNs) to transmit data downstream.
The opposite problem of managing and allocating bandwidth in a system characterized by frequent and large uploads from distributed endpoints to a central server has not often been explored. This problem becomes more complex if the endpoints in the system are scattered over a wide area network (WAN) or the Internet and the network between the endpoints and the server cannot be controlled by applying quality of service (QoS) policies. One example of such a system is the commercially available Horizon Mirage™, by VMware® of Palo Alto, Calif. Mirage is a system for managing and deploying endpoint images that are managed in a central server, but executing workloads locally on user devices for optimal user experience. For example, a traveling employee may deploy an image of the employee's office desktop onto a local machine and execute the workload therein. Mirage frequently synchronizes a snapshot of the endpoint image, on the local machine, with the central server. Doing so “saves” changes the user makes on the server and provides continuous data protection.
Traditionally, to optimize bandwidth usage when multiple endpoints are synchronizing with a central server, each endpoint determines independently whether the network appears congested and whether it should throttle its own uploading. Such independent determination by client devices is a suboptimal solution for managing overall bandwidth usage.